{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Working with data from AnyBody"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are several ways to output data from AnyBody. The most convinient way to export a few variables from AnyBody is through the API in AnyPyTools. This is what you saw in the previous tutorials which used the 'Dump' macro class operation to export specific variables. \r\n",
    "\r\n",
    "Another option is to have AnyBody write specific variables to a file by adding the 'AnyOutputFile' class to the AnyBody model, or exporting an HDF5 file with all data from a simulation. In these cases AnyPyTools has methods to make it easier to get data into Python for futher analysis. \r\n",
    "\r\n",
    "Here we go through the different methods. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Output data through AnyPyTools\r\n",
    "\r\n",
    "Using the AnyPyTools API directly is the easiest way to export data when you only need to export a limited number of variables.\r\n",
    "\r\n",
    "In the following we use the toy example from the \"Generating Macros\" tutorial. We crate 6 macros with different parameters and collect the result from running the simulations. Data is exported by including the `Dump(\"<folder/variable name>\")` command. If a folder is specified all variables below that level is exported.\r\n",
    "\r\n",
    "> **Note:** Remember to specifiy the variables in study `.Ouput.*` folder if you need the results of a simulation. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "03d50f20208d46e1ae591fdfa1ca82e1",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/6 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Completed: 6\n"
     ]
    }
   ],
   "source": [
    "from anypytools import AnyMacro, AnyPyProcess, macro_commands as mc\r\n",
    "\r\n",
    "macro_list = [\r\n",
    "    [\r\n",
    "        mc.Load(\"Knee.any\"),\r\n",
    "        mc.SetValue(\"Main.MyModel.PatellaLigament.DriverPos\", 0.02 + i * 0.01),\r\n",
    "        mc.OperationRun(\"Main.MyStudy.InverseDynamics\"),\r\n",
    "        mc.Dump(\"Main.MyStudy.Output.Abscissa.t\"),\r\n",
    "        mc.Dump(\"Main.MyStudy.Output.MaxMuscleActivity\"),\r\n",
    "        mc.Dump(\"Main.MyModel.PatellaLigament.DriverPos\"),\r\n",
    "    ]\r\n",
    "    for i in range(6)\r\n",
    "]\r\n",
    "\r\n",
    "app = AnyPyProcess()\r\n",
    "results = app.start_macro(macro_list)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now the variable `results` is a list of dictionaries with the output from AnyBody. This is a very flexible format that can hold any kind of data we can output from AnyBody."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.04])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results[2][\"Main.MyModel.PatellaLigament.DriverPos\"]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "If we plot this data we need to do some manual work. I.e. looping over the list and plot individual variables. \n",
    "\n",
    "However, it can be made much easier if we convert data into a Pandas DataFrame. A DataFrame is like an excel spreadsheet. Most python plotting libries can plot directly from that.\n",
    "\n",
    "> *Note:* Not all data is suitable for convertion to a DataFrame. You data needs the same type of output in every simulation. Also, a DataFrame is 2 dimensional so higher dimensional data (like vectors) are flattend with x/y/z components into seperate collumns."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\r\n",
    "\r\n",
    "df = results.to_dataframe(index_var='Main.MyStudy.Output.Abscissa.t')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `index_var` specifies which variable becomes the x axis in the dataset. Other variables which doesn't have the same first dimension as the `index_var` will flabe repeated along that dimension. This allows you to export which are not a function of time. Those variables then become constants.\n",
    "\n",
    "Line plots only work if you have the same x axis across all simulations. Otherwise, you need to interpolate the data.\n",
    "\n",
    "Now plotting the data is really simple with a library like for example [seaborn](https://seaborn.pydata.org/):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAe4AAAELCAYAAAAfnmVnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAACpcElEQVR4nOydd3hc1bW33z19RhqNem+2LMm994KNDTbG9N5bgBBIQsJNuLlfem76DUkgISGEQICAwRjTjHFv2Lh3W5ZtualYsvr0Pvv7YyRZsmTNuMj1vM9zHknn7LPP3pI966y91/otIaVEQUFBQUFB4dJAdaEHoKCgoKCgoBA9iuFWUFBQUFC4hFAMt4KCgoKCwiWEYrgVFBQUFBQuIRTDraCgoKCgcAmhGG4FBQUFBYVLCM2FHoCCgoKCwsXFli1bUjUazWvAQBQH70IQAnYHAoHHR4wYUXvyRcVwKygoKCh0QKPRvJaent4vJSWlSaVSKWIf55lQKCTq6ur619TUvAbcdPJ15U1KQUFBQeFkBqakpNgUo31hUKlUMiUlxUp4xaPz9fM8HgUFBQWFix+VYrQvLC2//y5t9GW1VJ6cnCzz8/Mv9DAUFBQULhm2bNlSL6VMidROrVaPKCwsdAeDQdGnTx/3nDlzjpjN5lBXbefPn2/W6/Wha6+91tldny+99FLS5s2bY956663y5557LjM2Njb4i1/84ng0425/bzTto+Wll15Kuummm2z5+fl+gKysrEGbN2/em5GREejuvrVr1xpfeuml1Pfff/9otM+64YYbev/mN7+pGjRokPd0xnhZGe78/Hw2b958oYehoKCgcMkghIjK0Oj1+lBpaWkJwE033dTrhRdeSPnZz37WpZFdvny5OTY2NhjJcF+M/Oc//0keOnSou9VwR8svf/nLjJ/85CfVp3PPN77xjdpf/epX6e+9917Uxh6UpXIFBQUFhdNk4sSJjrKyMv27775rGTx4cN9+/fr1Hz9+fFFFRYVm3759urfeeivllVdeSevbt2//hQsXxh47dkwzY8aMgoEDB/YbOHBgv8WLF8d01/8LL7yQPHDgwH7FxcX9Z8yYUWC327u1Vafq/7nnnsu8884780ePHl2cnZ096Je//GVq6z3f//73M3r16jVg/PjxhTfeeGOvn/zkJ2lvvPFGwu7du00PPfRQ7759+/Z3OBwC4Pe//31q//79+xUVFfXftm2b4eTnNzU1qfbu3WsaN26cu/W5t912W/6ECRMKs7KyBr355pvxTz31VHZRUVH/SZMmFXq9XgFw3XXXOb788ss4v/+03hEUw62goKCgED1+v59FixbFDRo0yH3ttdc6tm/fXrp3796SO+64o/EXv/hFenFxse+hhx6qe+qpp46XlpaWXHfddY6vf/3rOc8999zx3bt37/3oo48OPvXUU/ndPeP+++9v2r179959+/aVFBcXu1966aXk7tp3139ZWZlh1apV+zdt2rT3D3/4Q6bX6xWrV682ffbZZwm7du0q+fzzzw/u3LkzBuDRRx9tGjhwoOutt946VFpaWhIbGysBkpOTAyUlJXsfe+yxut/+9rdpJz9/zZo1McXFxe72544ePapfvnx52dy5c8ueeuqpXlOnTrXt37+/xGAwhObMmWMBUKvV5OXledavX2+K9vcPl9lSuYKCgoJCz+D1elV9+/btDzBmzBj7s88+W79z507DLbfckl1XV6f1+XyqnJycLvdq165dG3fgwAFj688Oh0Pd1NR0Ssdxy5Ytxp/85CdZdrtd7XQ61ZMnT7Z2N7bu+p8+fXqz0WiURqMxkJiY6K+srNSsXLkydubMmc0thllee+21zd31f9999zUBjB492vXpp58mnHy9qqpKm5SU1MFtvuaaa6x6vV6OHj3aHQwGxR133GEDGDBggPvw4cO61nbJycmBiooKbXfPPxnFcCsoKCgoRKT9Hncr3/zmN3OfffbZmvvvv986f/588y9+8YvMru6VUrJ58+a9rR5sJJ588slec+fOLRs3bpz7pZdeSlq1apW5u/bd9a/X69vOqdVqAoGAkPL0AuYNBoME0Gg0MhAIiJOvm0ymkNfr7fAi0vpctVqNRqORKlX4skqlon0fXq9XZTKZugzyOxXKUrmCgoKCwhlht9vVubm5foB///vfSa3nzWZz0G63q1t/njhxou13v/td2/7yV199ZaQbXC6XKjc31+/1esV7772XGGkcp9v/lClTHIsWLbK4XC5htVpVS5cujW+9FhsbG7Rarepubu/EoEGDPEeOHNGfzj2tHD58WD9s2DDP6dyjGG4FBQUFhTPihz/84bF77723YMSIEcVJSUlt6VK333578+effx7fGpz26quvVmzdujWmqKiof0FBwYC//vWv3aaf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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "\n",
    "g = sns.lineplot(\n",
    "    data=df,\n",
    "    x=\"Main.MyStudy.Output.Abscissa.t\",\n",
    "    y=\"Main.MyStudy.Output.MaxMuscleActivity\",\n",
    "    hue=\"Main.MyModel.PatellaLigament.DriverPos\",\n",
    ")\n",
    "g.legend(title=\"Patella length (m)\", loc='lower left', bbox_to_anchor=(1, 0.5));\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Working with AnyOutputFiles"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The `AnyOutputFile` class is an other methods of exporting data from AnyBody. It is a AnyScript class in the AnyBody Modeling System which produces text files with data when a simulation is run. These text files are very similar to comma seperated files with some additional header information. \r\n",
    "\r\n",
    "Here is an example below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Overwriting TestOutput.csv\n"
     ]
    }
   ],
   "source": [
    "%%writefile TestOutput.csv\n",
    "---- AnyBody Output File ---------------------------------\n",
    "Study Main.MyStudy\n",
    "Operation Main.MyStudy.InverseDynamics\n",
    "----------------------------------------------------------\n",
    "Constants (Name = Value) \n",
    "Main.MyStudy.FileOutput.ConstName = HelloWorld\n",
    "Main.MyStudy.nStep = 5\n",
    "Main.MyModel.Femur.Knee.sRel = { 0.000000000000000e+000, -3.000000000000000e-001,  0.000000000000000e+000}\n",
    "----------------------------------------------------------\n",
    "Variables (Column# Name) \n",
    "col0  Main.MyStudy.t\n",
    "col1  Main.MyStudy.MomentArm\n",
    "----------------------------------------------------------\n",
    "Main.MyStudy.t,Main.MyStudy.MomentArm\n",
    " 0.000000000000000e+000, 3.517106754087954e-002\n",
    " 6.000000000000000e-001, 4.256597756479537e-002\n",
    " 1.200000000000000e+000,-2.495531558514929e-004\n",
    " 1.800000000000000e+000, 4.256603812471121e-002\n",
    " 2.400000000000000e+000, 3.517106649790244e-002\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "It is not particular difficult to read. You could write you own custom Python, Matlab code to parse the values. But **`anypytools`**  has a few convinience functions that makes it very easy to load the files. \n",
    "\n",
    "This is especially usefull for the header information which can be annoying to parse manually. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from anypytools.datautils import read_anyoutputfile\r\n",
    "\r\n",
    "data, header, constants = read_anyoutputfile(\"TestOutput.csv\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The function returns three outputs. An array with the time dependent data, and a list of header names:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(['Main.MyStudy.t', 'Main.MyStudy.MomentArm'],\n",
       " array([[ 0.00000000e+00,  3.51710675e-02],\n",
       "        [ 6.00000000e-01,  4.25659776e-02],\n",
       "        [ 1.20000000e+00, -2.49553156e-04],\n",
       "        [ 1.80000000e+00,  4.25660381e-02],\n",
       "        [ 2.40000000e+00,  3.51710665e-02]]))"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "header, data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "and python dictonary with constant values:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'Main.MyStudy.FileOutput.ConstName': 'HelloWorld',\n",
       " 'Main.MyStudy.nStep': 5.0,\n",
       " 'Main.MyModel.Femur.Knee.sRel': array([ 0. , -0.3,  0. ])}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "constants"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Working with HDF5 files"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Sometimes, it can be convenient to save the entire model along with all its data (although this can be several hundred megabytes). It is useful if we later want to analyze other output variables from the model. It can also be useful if we want to load the data in the AnyBody graphical user application and replay the result.\n",
    "\n",
    "AnyBody has a feature to save the output of a study to an HDF5 file. And like most things in AnyBody, this can also be done with a macro command. \n",
    "\n",
    "Let us try this with the model from the previous tutorials."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[load \"Knee.any\",\n",
       " operation Main.MyStudy.Kinematics\n",
       " run,\n",
       " classoperation Main.MyStudy.Output \"Save data\" --type=\"Deep\" --file=\"output.anydata.h5\"]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from anypytools.macro_commands import Load, OperationRun, SaveData\r\n",
    "\r\n",
    "macrolist = [\r\n",
    "  Load('Knee.any'),\r\n",
    "  OperationRun('Main.MyStudy.Kinematics'),\r\n",
    "  SaveData('Main.MyStudy', 'output.anydata.h5'),\r\n",
    "]\r\n",
    "macrolist"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    " Here we have added a \"`Save data`\" classoperation to the macro. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "28b297bd370c46bab0f9ab2243ebffff",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "  0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Completed: 1\n"
     ]
    }
   ],
   "source": [
    "from anypytools import AnyPyProcess \r\n",
    "app = AnyPyProcess()\r\n",
    "\r\n",
    "app.start_macro(macrolist);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The data stored in the file **output.anydata.h5** can be re-loaded in the AnyBody GUI application. \n",
    "\n",
    "To do this; load the model, and then right click the `Main.MyStudy.Output` folder and select \"Load data\". \n",
    "\n",
    "These files can also be loaded into Matlab or Python. In python this is done using the *`h5py`* module\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0.03517107 0.03518544 0.03522538 0.03529129 0.03538355 0.03550231\n",
      " 0.03564761 0.03581929 0.03601707 0.03624048 0.03648895 0.03676178\n",
      " 0.03705816 0.03737724 0.03771812 0.03807991 0.03846173 0.03886281\n",
      " 0.03928244 0.03972002 0.0401751  0.04064731 0.04113638 0.04164206\n",
      " 0.04216406 0.04270195 0.04325503 0.04382223 0.04440197 0.04499208\n",
      " 0.04558969 0.04619126 0.04679259 0.04738895 0.04797527 0.04854637\n",
      " 0.0490972  0.04962319 0.05012044 0.0505859  0.051017   0.0514114\n",
      " 0.05176698 0.0520819  0.05235456 0.05258365 0.05276812 0.05290715\n",
      " 0.05300015 0.05304675 0.05304675 0.05300015 0.05290715 0.05276812\n",
      " 0.05258365 0.05235456 0.0520819  0.05176698 0.0514114  0.051017\n",
      " 0.0505859  0.05012044 0.04962319 0.0490972  0.04854637 0.04797527\n",
      " 0.04738895 0.04679259 0.04619126 0.04558969 0.04499208 0.04440197\n",
      " 0.04382223 0.04325503 0.04270195 0.04216406 0.04164206 0.04113638\n",
      " 0.04064731 0.0401751  0.03972002 0.03928244 0.03886281 0.03846173\n",
      " 0.03807991 0.03771812 0.03737724 0.03705816 0.03676178 0.03648895\n",
      " 0.03624048 0.03601707 0.03581929 0.03564761 0.03550231 0.03538355\n",
      " 0.03529129 0.03522538 0.03518546 0.03517104]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\r\n",
    "import h5py\r\n",
    "\r\n",
    "h5file = h5py.File('output.anydata.h5', \"r\")\r\n",
    "data = np.array( h5file['/Output/MomentArm'] )\r\n",
    "h5file.close()\r\n",
    "print(data)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The data structure of the HDF5 files can, unfortunately, be very confusing. AnyBody does not save duplicate copies of the same data. If there are multiple references to the same folder, only one will be present in the HDF5 file. \n",
    "In our model `Knee.any` we have a reference to the **`Knee`** joint folder just before the **`Model`** folder in the study section. Thus, all variables inside the **`Knee`** folder cannot be accessed with the path '/Output/Model/Knee/...', but only through the path of the reference '/Output/kneeref/...'.\n",
    "\n",
    "We can see the problem in the following code snippet:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "False\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "with h5py.File('output.anydata.h5', \"r\") as f:\r\n",
    "    print('/Output/Model/Knee/Pos' in f)\r\n",
    "    print('/Output/kneeref/Pos' in f)\r\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This makes it difficult to find the correct path in large models with many references. AnyPyTools contains a wrapper for the h5py module, which automatically locates the right data, no matter what path is used. Using this module, we can easily locate the data. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "True\n",
      "True\n"
     ]
    }
   ],
   "source": [
    "import anypytools.h5py_wrapper as h5py2\r\n",
    "with h5py2.File('output.anydata.h5', \"r\") as f:\r\n",
    "    print('/Output/Model/Knee/Pos' in f)\r\n",
    "    print('/Output/kneeref/Pos' in f)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The h5py wrapper will also let us use the AnyScript variable names directly, so we don't have to replace every . (dot) with a / (slash), and remove the stuff before the Output folder. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "with h5py2.File('output.anydata.h5', \"r\") as f:\r\n",
    "    momentarm = np.array(f['/Output/MomentArm']) # Standard h5py notation\r\n",
    "    momentarm = np.array(f['Output.MomentArm'])  # dot notation\r\n",
    "    kneeangle = np.array(f['Main.MyStudy.Output.Model.Knee.Pos']) # dot notation with full path\r\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\r\n",
    "from numpy import degrees\r\n",
    "import matplotlib.pyplot as plt\r\n",
    "from matplotlib.ticker import FuncFormatter\r\n",
    "\r\n",
    "plt.plot(degrees(kneeangle), 100*momentarm)\r\n",
    "\r\n",
    "plt.xlabel('Knee flexion (deg)')\r\n",
    "plt.ylabel('Moment arm (cm)');"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "interpreter": {
   "hash": "7840ed1e0d8c0fa6141b9782bb3c547b5e5fa4178e680f89033f8188680e7ee3"
  },
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.2"
  },
  "widgets": {
   "application/vnd.jupyter.widget-state+json": {
    "state": {
     "03d50f20208d46e1ae591fdfa1ca82e1": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HBoxModel",
      "state": {
       "children": [
        "IPY_MODEL_3f45d64991ef4131b666acb4b5806a8c",
        "IPY_MODEL_85d9001517604db0b3a1e5f96fcaefd4",
        "IPY_MODEL_8844bf038e354356a6a8ebed6edafc7c"
       ],
       "layout": "IPY_MODEL_6fc36b62a2c642548a759550259a61d6"
      }
     },
     "0cd266c9e079400a987eb0a81f3effbd": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "1faa76cd37c643739b1946474e33bf44": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "28b297bd370c46bab0f9ab2243ebffff": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HBoxModel",
      "state": {
       "children": [
        "IPY_MODEL_c6650c25f6a24473bce6e14c21b175da",
        "IPY_MODEL_58cd7565c37648b8a1b6b0dae869d5c2",
        "IPY_MODEL_62a3ab5a237e43f5bdc70cf679794dd8"
       ],
       "layout": "IPY_MODEL_fab455e0789342a3b438b2b8a6f22960"
      }
     },
     "3a0654f3e2b242f3b16e2d281ffceb9d": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "3f45d64991ef4131b666acb4b5806a8c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "layout": "IPY_MODEL_4e3780142bf34c04ba1db9122ebdbb91",
       "style": "IPY_MODEL_1faa76cd37c643739b1946474e33bf44",
       "value": "100%"
      }
     },
     "4d8c75bea4c146f7ae7d1e1b67c23433": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "4e3780142bf34c04ba1db9122ebdbb91": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "540cbef2d76b421d81e17ff2650e1034": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ProgressStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "58cd7565c37648b8a1b6b0dae869d5c2": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "FloatProgressModel",
      "state": {
       "bar_style": "success",
       "layout": "IPY_MODEL_3a0654f3e2b242f3b16e2d281ffceb9d",
       "max": 1,
       "style": "IPY_MODEL_c7010308363d4be89563e730865e200f",
       "value": 1
      }
     },
     "62a3ab5a237e43f5bdc70cf679794dd8": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "layout": "IPY_MODEL_4d8c75bea4c146f7ae7d1e1b67c23433",
       "style": "IPY_MODEL_a9898db9a9794735b8caa7fce2eef014",
       "value": " 1/1 [00:00&lt;00:00,  1.09it/s]"
      }
     },
     "6fc36b62a2c642548a759550259a61d6": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "85d9001517604db0b3a1e5f96fcaefd4": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "FloatProgressModel",
      "state": {
       "bar_style": "success",
       "layout": "IPY_MODEL_0cd266c9e079400a987eb0a81f3effbd",
       "max": 6,
       "style": "IPY_MODEL_540cbef2d76b421d81e17ff2650e1034",
       "value": 6
      }
     },
     "8844bf038e354356a6a8ebed6edafc7c": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "layout": "IPY_MODEL_a522f8b2f8f648f688fded6558c28f0f",
       "style": "IPY_MODEL_feb2f0d7d83340deae97de119f753686",
       "value": " 6/6 [00:04&lt;00:00,  1.39it/s]"
      }
     },
     "a522f8b2f8f648f688fded6558c28f0f": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "a9898db9a9794735b8caa7fce2eef014": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "c6650c25f6a24473bce6e14c21b175da": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "HTMLModel",
      "state": {
       "layout": "IPY_MODEL_e8314e2e49d44b2898af56b3f09f3332",
       "style": "IPY_MODEL_e4ae7550463643b796cbb54ca05470d6",
       "value": "100%"
      }
     },
     "c7010308363d4be89563e730865e200f": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "ProgressStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "e4ae7550463643b796cbb54ca05470d6": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     },
     "e8314e2e49d44b2898af56b3f09f3332": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "fab455e0789342a3b438b2b8a6f22960": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "1.2.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "feb2f0d7d83340deae97de119f753686": {
      "model_module": "@jupyter-widgets/controls",
      "model_module_version": "1.5.0",
      "model_name": "DescriptionStyleModel",
      "state": {
       "description_width": ""
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
